const fs = require("fs");
const path = require("path");
const { promisify } = require("util");

// 递归调用
// function makeDir(dirPath, cb) {
//   let parts = dirPath.split("/");
//   let index = 1;

//   function next() {
//     if (index > parts.length) return cb && cb();

//     let current = parts.slice(0, index++).join("/");

//     fs.access(current, (err) => {
//       if (err) {
//         fs.mkdir(current, next);
//       } else {
//         next();
//       }
//     });
//   }
//   next();
// }

// makeDir("a/b/c", () => {
//   console.log("创建成功");
// });

// 将 access 与 mkdir 处理成async 。。。风格（promise）
const access = promisify(fs.access);
const mkdir = promisify(fs.mkdir);

async function mymkdir(dirPath, cb) {
  let parts = dirPath.split("/");

  for (let i = 1; i <= parts.length; i++) {
    const current = parts.slice(0, i).join("/");
    try {
      await access(current);
    } catch (error) {
      await mkdir(current);
    }
  }

  cb && cb();
}

mymkdir("a/b/c", () => {
  console.log("创建成功");
});
